Standard Stream & file system call [system call]

표준 입출력(Standard Stream) 과 파일 시스템콜
common으로 실행되는 프로세스는 세 가지 스트림을 가지고 있다.
    표준 입력 스트림(Standard Input Stream)-stdin
    표준 출력 스트림(Standard Output Stream)-stdout
    오류 출력 스트림(Standard Error Stream)-stderr

모든 스트림은 일반적인 plain text로 console에 출력하도록 되어 있다.

표준 입출력도 일종의 파일이다.
std_test.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char** argv){
char buf[256];
FILE* fp;
if (argc==2){
fp=fopen(argv[1], "r");
if(fp==NULL){
fputs("file open error", stderr);
exit(0);
}
}else{
fp=stdin;
}
while(fgets(buf, 255, fp)!=NULL){
fputs(buf, stdout);
}
}

csian@Csianui-MacBookPro linux % ./std_test

hi

hi

hello

hello

파일이 실행되면 기본적으로 stdin stdout stderr 세개의 파일 디스크립터가 열린다.(리눅스)
키보드로 입력해주면, 해당 데이터는 stdin 파일에 입력된다.
코드에서 stdin의 데이터를 stdout으로 적게 만들었기 때문에 출력한다.